package org.dromara.workflow.common.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：任务状态枚举
 */
@Getter
@AllArgsConstructor
public enum FormTypeEnum {
    /**
     * 自定义表单
     */
    STATIC("static", "自定义表单"),

    /**
     * 动态表单
     */
    DYNAMIC("dynamic", "动态表单");

    /**
     * 类型
     */
    private final String type;

    /**
     * 描述
     */
    private final String desc;

    /**
     * 表单类型
     * 本方法旨在通过给定的表单类型(formType)返回相应的描述(desc)它首先检查formType是否为空或只包含空白字符；
     * 如果是，直接返回空字符串这是因为对于无效的formType，没有相应的描述可以返回然后，方法枚举所有可能的
     * 表单类型（FormTypeEnum.values()），并通过比较类型属性来过滤出匹配的枚举项如果找到匹配项，返回该枚举项
     * 的描述属性；否则，返回空字符串这种设计模式有效地将业务逻辑与表单类型的校验和处理分离开来，提高了代码
     * 的可读性和可维护性
     *
     * @param formType 表单类型
     */
    public static String findByType(String formType) {
        if (StringUtils.isBlank(formType)) {
            return StrUtil.EMPTY;
        }

        // 根据表单类型formType，获取其描述信息
        // 如果找不到对应类型，则返回空字符串
        return Arrays.stream(FormTypeEnum.values())
            .filter(statusEnum -> statusEnum.getType().equals(formType))
            .findFirst()
            .map(FormTypeEnum::getDesc)
            .orElse(StrUtil.EMPTY);
    }
}

